def time_format_converter():
    """地区时间格式转换器：支持8个国家/地区的时间格式转换"""
    print("🌍 地区时间格式转换器 🌍")
    print("支持转换的地区：中国、美国、英国、德国、俄罗斯、澳大利亚、法国、加拿大\n")
    
    # 定义各地区的时间格式规则（键：地区名称，值：(日期格式模板, 说明)）
    region_formats = {
        "中国": ("%Y年%m月%d日 %H:%M:%S", "YYYY年MM月DD日 HH:mm:ss"),
        "美国": ("%m/%d/%Y %H:%M:%S", "MM/DD/YYYY HH:mm:ss"),
        "英国": ("%d/%m/%Y %H:%M:%S", "DD/MM/YYYY HH:mm:ss"),
        "德国": ("%d.%m.%Y %H:%M:%S", "DD.MM.YYYY HH:mm:ss"),
        "俄罗斯": ("%d.%m.%Y %H:%M:%S", "DD.MM.YYYY HH:mm:ss"),
        "澳大利亚": ("%d/%m/%Y %H:%M:%S", "DD/MM/YYYY HH:mm:ss"),
        "法国": ("%d/%m/%Y %H:%M:%S", "DD/MM/YYYY HH:mm:ss"),
        "加拿大": ("%Y-%m-%d %H:%M:%S", "YYYY-MM-DD HH:mm:ss")
    }
    
    # 1. 获取用户输入的时间参数（年、月、日、时、分、秒）
    def get_valid_input(prompt, min_val, max_val):
        """获取合法的数值输入（范围验证）"""
        while True:
            try:
                value = int(input(prompt))
                if min_val <= value <= max_val:
                    return value
                else:
                    print(f"❌ 输入无效！请输入{min_val}-{max_val}之间的整数")
            except ValueError:
                print("❌ 输入无效！请输入整数")
    
    # 输入时间组件（带范围验证）
    year = get_valid_input("请输入年份（例如：2025）：", 1900, 2100)
    month = get_valid_input("请输入月份（1-12）：", 1, 12)
    # 根据月份动态验证日期范围（简化版：28/30/31天判断）
    if month in [4, 6, 9, 11]:
        day = get_valid_input(f"请输入日期（1-30）：", 1, 30)
    elif month == 2:
        # 简单判断闰年（能被4整除但不能被100整除，或能被400整除）
        is_leap = (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
        day = get_valid_input(f"请输入日期（1-{29 if is_leap else 28}）：", 1, 29 if is_leap else 28)
    else:
        day = get_valid_input(f"请输入日期（1-31）：", 1, 31)
    
    hour = get_valid_input("请输入小时（0-23）：", 0, 23)
    minute = get_valid_input("请输入分钟（0-59）：", 0, 59)
    second = get_valid_input("请输入秒（0-59）：", 0, 59)
    
    # 2. 获取用户选择的地区
    print("\n可选地区：", end="")
    print("、".join(region_formats.keys()))  # 显示所有支持的地区
    while True:
        region = input("请输入要转换的地区名称（需与上面一致）：").strip()
        if region in region_formats:
            break
        else:
            print(f"❌ 地区无效！请从以下选项中选择：{','.join(region_formats.keys())}")
    
    # 3. 格式转换与输出
    from datetime import datetime
    # 构造datetime对象（确保时间合法）
    try:
        time_obj = datetime(year, month, day, hour, minute, second)
        # 根据地区获取格式模板
        format_template, format_desc = region_formats[region]
        # 格式化输出
        formatted_time = time_obj.strftime(format_template)
        
        # 显示结果
        print("\n" + "="*50)
        print(f"📅 输入时间：{year}年{month}月{day}日 {hour:02d}:{minute:02d}:{second:02d}")
        print(f"🌐 目标地区：{region}")
        print(f"📋 地区格式：{format_desc}")
        print(f"✅ 转换结果：{formatted_time}")
        print("="*50)
    except Exception as e:
        print(f"❌ 时间转换失败：{str(e)}")

# 4. 询问是否继续使用
def main():
    while True:
        time_format_converter()
        while True:
            choice = input("\n是否继续转换？（y/n）：").strip().lower()
            if choice in ['y', 'n']:
                break
            print("❌ 输入无效！请输入 y 或 n")
        if choice == 'n':
            print("👋 感谢使用，再见！")
            break

if __name__ == "__main__":
    main()